package com.intelligent.service;

import com.intelligent.pojo.ProductionPlans;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;

/**
* @author lenovo
* @description 针对表【production_plans(生产计划表)】的数据库操作Service
* @createDate 2025-09-04 08:41:34
*/
public interface ProductionPlansService extends IService<ProductionPlans> {

    /**
     * 分页查询生产计划（包含用户信息）
     * @param page 分页对象
     * @param planNo 计划编号
     * @param planStatus 计划状态
     * @param sourceType 来源类型
     * @param urgentStatus 加急状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param username 负责人用户名
     * @return 分页结果
     */
    IPage<ProductionPlans> selectProductionPlansWithUser(Page<ProductionPlans> page,
                                                         String planNo,
                                                         Integer planStatus,
                                                         Integer sourceType,
                                                         Integer urgentStatus,
                                                         Date startTime,
                                                         Date endTime,
                                                         String username);

    /**
     * 添加生产计划
     * @param productionPlans 生产计划对象
     * @return 是否成功
     */
    boolean addProductionPlan(ProductionPlans productionPlans);

    /**
     * 根据计划编号更新生产计划
     * @param productionPlans 生产计划对象
     * @return 是否成功
     */
    boolean updateProductionPlanByPlanNo(ProductionPlans productionPlans);

    /**
     * 根据计划编号删除生产计划
     * @param planNo 计划编号
     * @return 是否成功
     */
    boolean deleteProductionPlanByPlanNo(String planNo);

    /**
     * 根据ID查询生产计划（包含用户信息）
     * @param id 记录ID
     * @return 生产计划对象
     */
    ProductionPlans getProductionPlanByIdWithUser(Long id);
}
